#include <iostream>
using namespace std;

class lamda1
{
  private:
  public:
    lamda1();
    lamda1(const lamda1 &);
    lamda1(lamda1 &&);
    ~lamda1();
};

lamda1::lamda1()
{
    cout << "lamda1 construct general\n";
}

lamda1::lamda1(const lamda1 &)
{
    cout << "lamda1 construct copy\n";
}

lamda1::lamda1(lamda1 &&)
{
    cout << "lamda1 construct move\n";
}

lamda1::~lamda1()
{
    cout << "lamda1 disconstruct\n";
}

int main(int argc, char const *argv[])
{
    {
        lamda1 a;
        cout << "a1 addr: " << &a << endl;
        auto fc = [a]() { cout << "a2 addr: " << &a << endl; };
        fc();
    }
    return 0;
}
